home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 July: Mac OS SDK / Dev.CD Jul 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / AIncludes / OCEMessaging.a < prev    next >
Encoding:
Text File  |  1996-01-24  |  40.5 KB  |  1,364 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        OCEMessaging.a
  3. ;
  4. ;    Contains:    Apple Open Collaboration Environment Messaging Interfaces.
  5. ;
  6. ;    Version:    Technology:    AOCE Toolbox 1.02
  7. ;                Package:    Universal Interfaces 2.2 in “MPW” on ETO #20
  8. ;
  9. ;    Copyright:    © 1984-1995 by Apple Computer, Inc.
  10. ;                All rights reserved.
  11. ;
  12. ;    Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13. ;                stack.  Include the file and version information (from above)
  14. ;                in the problem description and send to:
  15. ;                    Internet:    apple.bugs@applelink.apple.com
  16. ;                    AppleLink:    APPLE.BUGS
  17. ;
  18. ;
  19.  
  20.     IF &TYPE('__OCEMESSAGING__') = 'UNDEFINED' THEN
  21. __OCEMESSAGING__ SET 1
  22.  
  23.  
  24.     IF &TYPE('__APPLEEVENTS__') = 'UNDEFINED' THEN
  25.     include 'AppleEvents.a'
  26.     ENDIF
  27. ;        include 'Errors.a'                                            ;
  28. ;            include 'ConditionalMacros.a'                            ;
  29. ;        include 'Types.a'                                            ;
  30. ;        include 'Memory.a'                                            ;
  31. ;            include 'MixedMode.a'                                    ;
  32. ;        include 'OSUtils.a'                                        ;
  33. ;        include 'Events.a'                                            ;
  34. ;            include 'Quickdraw.a'                                    ;
  35. ;                include 'QuickdrawText.a'                            ;
  36. ;        include 'EPPC.a'                                            ;
  37. ;            include 'AppleTalk.a'                                    ;
  38. ;            include 'Files.a'                                        ;
  39. ;                include 'Finder.a'                                    ;
  40. ;            include 'PPCToolbox.a'                                    ;
  41. ;            include 'Processes.a'                                    ;
  42. ;        include 'Notification.a'                                    ;
  43.  
  44.     IF &TYPE('__FILES__') = 'UNDEFINED' THEN
  45.     include 'Files.a'
  46.     ENDIF
  47.  
  48.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  49.     include 'Types.a'
  50.     ENDIF
  51.  
  52.     IF &TYPE('__DIGITALSIGNATURE__') = 'UNDEFINED' THEN
  53.     include 'DigitalSignature.a'
  54.     ENDIF
  55.  
  56.     IF &TYPE('__OCE__') = 'UNDEFINED' THEN
  57.     include 'OCE.a'
  58.     ENDIF
  59. ;        include 'Aliases.a'                                        ;
  60. ;        include 'Script.a'                                            ;
  61. ;            include 'IntlResources.a'                                ;
  62.  
  63.     IF &TYPE('__OCEAUTHDIR__') = 'UNDEFINED' THEN
  64.     include 'OCEAuthDir.a'
  65.     ENDIF
  66. ;****************************************************************************
  67. ; Definitions common to OCEMessaging and to OCEMail. These relate to addressing,
  68. ;message ids and priorities, etc. 
  69. ; Values of IPMPriority 
  70.  
  71. kIPMAnyPriority                    EQU        0                    ; FOR FILTER ONLY 
  72. kIPMNormalPriority                EQU        1
  73. kIPMLowPriority                    EQU        2
  74. kIPMHighPriority                EQU        3
  75.  
  76. ; typedef Byte                 IPMPriority
  77. ; Values of IPMAccessMode 
  78.  
  79. kIPMAtMark                        EQU        0
  80. kIPMFromStart                    EQU        1
  81. kIPMFromLEOM                    EQU        2
  82. kIPMFromMark                    EQU        3
  83.  
  84. ; typedef unsigned short     IPMAccessMode
  85.  
  86. kIPMUpdateMsgBit                EQU        4
  87. kIPMNewMsgBit                    EQU        5
  88. kIPMDeleteMsgBit                EQU        6
  89.  
  90. ; Values of IPMNotificationType 
  91. kIPMUpdateMsgMask                EQU        16
  92. kIPMNewMsgMask                    EQU        32
  93. kIPMDeleteMsgMask                EQU        64
  94.  
  95. ; typedef Byte                 IPMNotificationType
  96. ; Values of IPMSenderTag 
  97.  
  98. kIPMSenderRStringTag            EQU        0
  99. kIPMSenderRecordIDTag            EQU        1
  100.  
  101. ; typedef unsigned short     IPMSenderTag
  102.  
  103. kIPMFromDistListBit                EQU        0
  104. kIPMDummyRecBit                    EQU        1
  105. kIPMFeedbackRecBit                EQU        2                    ; should be redirected to feedback queue 
  106. kIPMReporterRecBit                EQU        3                    ; should be redirected to reporter original queue 
  107. kIPMBCCRecBit                    EQU        4                    ; this recipient is blind to all recipients of message 
  108.  
  109. ; Values of OCERecipientOffsetFlags 
  110. kIPMFromDistListMask            EQU        1
  111. kIPMDummyRecMask                EQU        2
  112. kIPMFeedbackRecMask                EQU        4
  113. kIPMReporterRecMask                EQU        8
  114. kIPMBCCRecMask                    EQU        16
  115.  
  116. ; typedef Byte                 OCERecipientOffsetFlags
  117. OCECreatorType             RECORD    0
  118. msgCreator                 ds.l   1        ; offset: $0 (0)
  119. msgType                     ds.l   1        ; offset: $4 (4)
  120. sizeof                     EQU *            ; size:   $8 (8)
  121.                         ENDR
  122.  
  123. ; typedef struct OCECreatorType  OCECreatorType
  124.  
  125. kIPMTypeWildCard                EQU        'ipmw'
  126. kIPMFamilyUnspecified            EQU        0
  127. kIPMFamilyWildCard                EQU        $3F3F3F3F            ; '??^ 
  128. ;
  129. ;    * well known signature 
  130. kIPMSignature                    EQU        'ipms'                ; base type 
  131. ;
  132. ;    * well known message types 
  133. kIPMReportNotify                EQU        'rptn'                ; routing feedback
  134. ;
  135. ;    * well known message block types 
  136. kIPMEnclosedMsgType                EQU        'emsg'                ; enclosed (nested) message 
  137. kIPMReportInfo                    EQU        'rpti'                ; recipient information 
  138. kIPMDigitalSignature            EQU        'dsig'
  139.  
  140. ; Values of IPMMsgFormat 
  141. kIPMOSFormatType                EQU        1
  142. kIPMStringFormatType            EQU        2
  143.  
  144. ; typedef unsigned short     IPMMsgFormat
  145. ; typedef Str32             IPMStringMsgType
  146. TheType                 RECORD    0
  147. msgOSType                 ds     OCECreatorType ; offset: $0 (0)
  148.                          ORG 0
  149. msgStrType                 ds.b   33        ; offset: $0 (0)
  150.                          ORG 34
  151. sizeof                     EQU *            ; size:   $22 (34)
  152.                         ENDR
  153.  
  154. ; typedef union TheType     TheType
  155. IPMMsgType                 RECORD    0
  156. format                     ds.w   1        ; offset: $0 (0)        ; IPMMsgFormat
  157. theType                     ds.w   17        ; offset: $2 (2)
  158. sizeof                     EQU *            ; size:   $24 (36)
  159.                         ENDR
  160.  
  161. ; typedef struct IPMMsgType  IPMMsgType
  162. ;
  163. ;Following are the known extension values for IPM addresses handled by Apple.
  164. ;We define the definition of the entn extension below.
  165. ;
  166.  
  167. kOCEalanXtn                        EQU        'alan'
  168. kOCEentnXtn                        EQU        'entn'                ; entn = entity name (aka DSSpec) 
  169. kOCEaphnXtn                        EQU        'aphn'
  170.  
  171. ;
  172. ;Following are the specific definitions for the extension for the standard
  173. ;OCEMail 'entn' addresses.  [Note, the actual extension is formatted as in
  174. ;IPMEntityNameExtension.]
  175. ;
  176. ; entn extension forms 
  177. kOCEAddrXtn                        EQU        'addr'
  178. kOCEQnamXtn                        EQU        'qnam'
  179. kOCEAttrXtn                        EQU        'attr'                ; an attribute specification 
  180. kOCESpAtXtn                        EQU        'spat'
  181.  
  182. ;
  183. ;Following are the specific definitions for standard
  184. ;OCEMail 'aphn' extension value.  
  185. ;
  186. ;All RStrings here are packed (e.g. truncated to length) and even padded (e.g.
  187. ;if length odd, then a pad byte (zero) should be introduced before the next field).
  188. ;
  189. ;The extension value is in the packed form of the following structure:
  190. ;    RString        phoneNumber;
  191. ;    RString        modemType;
  192. ;    Str32        queueuName;
  193. ;
  194. ;The body of phoneNumber compound RString is in the packed form of the following structure:
  195. ;    short         subType;
  196. ;    RString     countryCode;                // used when subType == kOCEUseHandyDial
  197. ;    RString        areaCode;                    // used when subType == kOCEUseHandyDial
  198. ;    RString        phone;                        // used when subType == kOCEUseHandyDial
  199. ;    RString        postFix;                    // used when subType == kOCEUseHandyDial
  200. ;    RString        nonHandyDialString;            // used when subType == kOCEDontUseHandyDial
  201. ;
  202. ; phoneNumber sub type constants 
  203. kOCEUseHandyDial                EQU        1
  204. kOCEDontUseHandyDial            EQU        2
  205.  
  206. ; FORMAT OF A PACKED FORM RECIPIENT 
  207. ProtoOCEPackedRecipient RECORD    0
  208. dataLength                 ds.w   1        ; offset: $0 (0)
  209. sizeof                     EQU *            ; size:   $2 (2)
  210.                         ENDR
  211.  
  212. ; typedef struct ProtoOCEPackedRecipient  ProtoOCEPackedRecipient
  213.  
  214. kOCEPackedRecipientMaxBytes        EQU        4094
  215.  
  216. OCEPackedRecipient         RECORD    0
  217. dataLength                 ds.w   1        ; offset: $0 (0)
  218. data                     ds.b   4094    ; offset: $2 (2)
  219. sizeof                     EQU *            ; size:   $1000 (4096)
  220.                         ENDR
  221.  
  222. ; typedef struct OCEPackedRecipient  OCEPackedRecipient
  223. IPMEntnQueueExtension     RECORD    0
  224. queueName                 ds.b   33        ; offset: $0 (0)
  225.                          ORG 34
  226. sizeof                     EQU *            ; size:   $22 (34)
  227.                         ENDR
  228.  
  229. ; typedef struct IPMEntnQueueExtension  IPMEntnQueueExtension
  230. ; kOCEAttrXtn 
  231. IPMEntnAttributeExtension RECORD    0
  232. attributeName             ds.l   9        ; offset: $0 (0)
  233. sizeof                     EQU *            ; size:   $24 (36)
  234.                         ENDR
  235.  
  236. ; typedef struct IPMEntnAttributeExtension  IPMEntnAttributeExtension
  237. ; kOCESpAtXtn 
  238. IPMEntnSpecificAttributeExtension RECORD    0
  239. attributeCreationID         ds.l   2        ; offset: $0 (0)
  240. attributeName             ds.l   9        ; offset: $8 (8)
  241. sizeof                     EQU *            ; size:   $2C (44)
  242.                         ENDR
  243.  
  244. ; typedef struct IPMEntnSpecificAttributeExtension  IPMEntnSpecificAttributeExtension
  245. ; All IPM entn extensions fit within the following 
  246. IPMEntityNameExtension     RECORD    0
  247. subExtensionType         ds.l   1        ; offset: $0 (0)
  248. specificAttribute         ds     IPMEntnSpecificAttributeExtension ; offset: $4 (4)
  249.                          ORG 4
  250. attribute                 ds     IPMEntnAttributeExtension ; offset: $4 (4)
  251.                          ORG 4
  252. queue                     ds     IPMEntnQueueExtension ; offset: $4 (4)
  253.                          ORG 48
  254. sizeof                     EQU *            ; size:   $30 (48)
  255.                         ENDR
  256.  
  257. ; typedef struct IPMEntityNameExtension  IPMEntityNameExtension
  258. ; addresses with kIPMNBPXtn should specify this nbp type 
  259. IPMMsgID                 RECORD    0
  260. id                         ds.l   4        ; offset: $0 (0)
  261. sizeof                     EQU *            ; size:   $10 (16)
  262.                         ENDR
  263.  
  264. ; typedef struct IPMMsgID     IPMMsgID
  265. ; Values of IPMHeaderSelector 
  266.  
  267. kIPMTOC                            EQU        0
  268. kIPMSender                        EQU        1
  269. kIPMProcessHint                    EQU        2
  270. kIPMMessageTitle                EQU        3
  271. kIPMMessageType                    EQU        4
  272. kIPMFixedInfo                    EQU        7
  273.  
  274. ; typedef Byte                 IPMHeaderSelector
  275. TheSender                 RECORD    0
  276. rString                     ds.l   65        ; offset: $0 (0)
  277.                          ORG 0
  278. rid                         ds.w   913        ; offset: $0 (0)
  279.                          ORG 1826
  280. sizeof                     EQU *            ; size:   $722 (1826)
  281.                         ENDR
  282.  
  283. ; typedef union TheSender     TheSender
  284. IPMSender                 RECORD    0
  285. sendTag                     ds.w   1        ; offset: $0 (0)
  286. theSender                 ds.w   913        ; offset: $2 (2)
  287. sizeof                     EQU *            ; size:   $724 (1828)
  288.                         ENDR
  289.  
  290. ; typedef struct IPMSender     IPMSender
  291. ;****************************************************************************
  292. ; Definitions specific to OCEMessaging 
  293. ; typedef unsigned long     IPMContextRef
  294. ; typedef unsigned long     IPMQueueRef
  295. ; typedef unsigned long     IPMMsgRef
  296. ; typedef unsigned long     IPMSeqNum
  297. ; typedef Str32             IPMProcHint
  298. ; typedef Str32             IPMQueueName
  299. IPMFixedHdrInfo         RECORD    0
  300. version                     ds.w   1        ; offset: $0 (0)
  301. authenticated             ds.b   1        ; offset: $2 (2)
  302. signatureEnclosed         ds.b   1        ; offset: $3 (3)        ;  digital signature enclosed 
  303. msgSize                     ds.l   1        ; offset: $4 (4)
  304. notification             ds.b   1        ; offset: $8 (8)
  305. priority                 ds.b   1        ; offset: $9 (9)
  306. blockCount                 ds.w   1        ; offset: $A (10)
  307. originalRcptCount         ds.w   1        ; offset: $C (12)        ;        original number of recipients 
  308. refCon                     ds.l   1        ; offset: $E (14)        ;        Client defined data 
  309. reserved                 ds.w   1        ; offset: $12 (18)
  310. creationTime             ds.l   1        ; offset: $14 (20)        ;        Time when it was created 
  311. msgID                     ds     IPMMsgID ; offset: $18 (24)
  312. family                     ds.l   1        ; offset: $28 (40)        ; family this msg belongs (e.g. mail) 
  313. sizeof                     EQU *            ; size:   $2C (44)
  314.                         ENDR
  315.  
  316. ; typedef struct IPMFixedHdrInfo  IPMFixedHdrInfo
  317.  
  318. kIPMDeliveryNotificationBit        EQU        0
  319. kIPMNonDeliveryNotificationBit    EQU        1
  320. kIPMEncloseOriginalBit            EQU        2
  321. kIPMSummaryReportBit            EQU        3
  322. ; modify enclose original to only on error 
  323. kIPMOriginalOnlyOnErrorBit        EQU        4
  324.  
  325. kIPMNoNotificationMask            EQU        $00
  326. kIPMDeliveryNotificationMask    EQU        1
  327. kIPMNonDeliveryNotificationMask    EQU        2
  328. kIPMDontEncloseOriginalMask        EQU        $00
  329. kIPMEncloseOriginalMask            EQU        4
  330. kIPMImmediateReportMask            EQU        $00
  331. kIPMSummaryReportMask            EQU        8
  332. kIPMOriginalOnlyOnErrorMask        EQU        16
  333. kIPMEncloseOriginalOnErrorMask    EQU        20
  334.  
  335. ; standard Non delivery codes 
  336. kIPMNoSuchRecipient                EQU        $0001
  337. kIPMRecipientMalformed            EQU        $0002
  338. kIPMRecipientAmbiguous            EQU        $0003
  339. kIPMRecipientAccessDenied        EQU        $0004
  340. kIPMGroupExpansionProblem        EQU        $0005
  341. kIPMMsgUnreadable                EQU        $0006
  342. kIPMMsgExpired                    EQU        $0007
  343. kIPMMsgNoTranslatableContent    EQU        $0008
  344. kIPMRecipientReqStdCont            EQU        $0009
  345. kIPMRecipientReqSnapShot        EQU        $000A
  346. kIPMNoTransferDiskFull            EQU        $000B
  347. kIPMNoTransferMsgRejectedbyDest    EQU        $000C
  348. kIPMNoTransferMsgTooLarge        EQU        $000D
  349.  
  350. ;***********************************************************************
  351. ;
  352. ;This is the structure that will be returned by enumerate and getmsginfo
  353. ;This definition is just to give you a template, the position of msgType
  354. ;is variable since this is a packed structure.  procHint and msgType are
  355. ;packed and even length padded.
  356. ;
  357. ;* master message info 
  358. IPMMsgInfo                 RECORD    0
  359. sequenceNum                 ds.l   1        ; offset: $0 (0)
  360. userData                 ds.l   1        ; offset: $4 (4)
  361. respIndex                 ds.w   1        ; offset: $8 (8)
  362. padByte                     ds.b   1        ; offset: $A (10)
  363. priority                 ds.b   1        ; offset: $B (11)
  364. msgSize                     ds.l   1        ; offset: $C (12)
  365. originalRcptCount         ds.w   1        ; offset: $10 (16)
  366. reserved                 ds.w   1        ; offset: $12 (18)
  367. creationTime             ds.l   1        ; offset: $14 (20)
  368. msgID                     ds     IPMMsgID ; offset: $18 (24)
  369. family                     ds.l   1        ; offset: $28 (40)        ; family this msg belongs (e.g. mail) 
  370. procHint                 ds.b   33        ; offset: $2C (44)
  371. filler2                     ds.b   1        ; offset: $4D (77)
  372. msgType                     ds     IPMMsgType ; offset: $4E (78)
  373. sizeof                     EQU *            ; size:   $72 (114)
  374.                         ENDR
  375.  
  376. ; typedef struct IPMMsgInfo  IPMMsgInfo
  377. ; typedef OCECreatorType     IPMBlockType
  378. IPMTOC                     RECORD    0
  379. blockType                 ds.l   2        ; offset: $0 (0)
  380. blockOffset                 ds.l   1        ; offset: $8 (8)
  381. blockSize                 ds.l   1        ; offset: $C (12)
  382. blockRefCon                 ds.l   1        ; offset: $10 (16)
  383. sizeof                     EQU *            ; size:   $14 (20)
  384.                         ENDR
  385.  
  386. ; typedef struct IPMTOC     IPMTOC
  387. ;
  388. ;The following structure is just to describe the layout of the SingleFilter.
  389. ;Each field should be packed and word aligned when passed to the IPM ToolBox.
  390. ;
  391. IPMSingleFilter         RECORD    0
  392. priority                 ds.b   1        ; offset: $0 (0)
  393. padByte                     ds.b   1        ; offset: $1 (1)
  394. family                     ds.l   1        ; offset: $2 (2)        ; family this msg belongs (e.g. mail), '??^ for all 
  395. script                     ds.w   1        ; offset: $6 (6)        ; Language Identifier 
  396. hint                     ds.b   33        ; offset: $8 (8)
  397. filler2                     ds.b   1        ; offset: $29 (41)
  398. msgType                     ds     IPMMsgType ; offset: $2A (42)
  399. sizeof                     EQU *            ; size:   $4E (78)
  400.                         ENDR
  401.  
  402. ; typedef struct IPMSingleFilter  IPMSingleFilter
  403. IPMFilter                 RECORD    0
  404. count                     ds.w   1        ; offset: $0 (0)
  405. sFilters                 ds     IPMSingleFilter ; offset: $2 (2)
  406. sizeof                     EQU *            ; size:   $50 (80)
  407.                         ENDR
  408.  
  409. ; typedef struct IPMFilter     IPMFilter
  410. ;************************************************************************
  411. ;Following structures define the “start” of a recipient report block and the
  412. ;elements of the array respectively.
  413. ;
  414. IPMReportBlockHeader     RECORD    0
  415. msgID                     ds     IPMMsgID ; offset: $0 (0)        ; message id of the original 
  416. creationTime             ds.l   1        ; offset: $10 (16)        ; creation time of the report 
  417. sizeof                     EQU *            ; size:   $14 (20)
  418.                         ENDR
  419.  
  420. ; typedef struct IPMReportBlockHeader  IPMReportBlockHeader
  421. OCERecipientReport         RECORD    0
  422. rcptIndex                 ds.w   1        ; offset: $0 (0)        ; index of recipient in original message 
  423. result                     ds.w   1        ; offset: $2 (2)        ; result of sending letter to this recipient
  424. sizeof                     EQU *            ; size:   $4 (4)
  425.                         ENDR
  426.  
  427. ; typedef struct OCERecipientReport  OCERecipientReport
  428. ;***********************************************************************
  429. ; typedef union IPMParamBlock  IPMParamBlock
  430. ; typedef IPMParamBlock     *IPMParamBlockPtr
  431. IPMOpenContextPB         RECORD    0
  432. qLink                     ds.l   1        ; offset: $0 (0)
  433. reservedH1                 ds.l   1        ; offset: $4 (4)
  434. reservedH2                 ds.l   1        ; offset: $8 (8)
  435. ioCompletion             ds.l   1        ; offset: $C (12)
  436. ioResult                 ds.w   1        ; offset: $10 (16)
  437. saveA5                     ds.l   1        ; offset: $12 (18)
  438. reqCode                     ds.w   1        ; offset: $16 (22)
  439. contextRef                 ds.l   1        ; offset: $18 (24)        ; <--  Context reference to be used in further calls
  440. sizeof                     EQU *            ; size:   $1C (28)
  441.                         ENDR
  442.  
  443. ; typedef struct IPMOpenContextPB  IPMOpenContextPB
  444. ; typedef IPMOpenContextPB     IPMCloseContextPB
  445. IPMCreateQueuePB         RECORD    0
  446. qLink                     ds.l   1        ; offset: $0 (0)
  447. reservedH1                 ds.l   1        ; offset: $4 (4)
  448. reservedH2                 ds.l   1        ; offset: $8 (8)
  449. ioCompletion             ds.l   1        ; offset: $C (12)
  450. ioResult                 ds.w   1        ; offset: $10 (16)
  451. saveA5                     ds.l   1        ; offset: $12 (18)
  452. reqCode                     ds.w   1        ; offset: $16 (22)
  453. filler1                     ds.l   1        ; offset: $18 (24)
  454. queue                     ds.l   1        ; offset: $1C (28)
  455. identity                 ds.l   1        ; offset: $20 (32)        ; used only if queue is remote 
  456. owner                     ds.l   1        ; offset: $24 (36)        ; used only if queue is remote 
  457. sizeof                     EQU *            ; size:   $28 (40)
  458.                         ENDR
  459.  
  460. ; typedef struct IPMCreateQueuePB  IPMCreateQueuePB
  461. ; For createqueue and deletequeue only queue and identity are used 
  462. ; typedef IPMCreateQueuePB     IPMDeleteQueuePB
  463. IPMOpenQueuePB             RECORD    0
  464. qLink                     ds.l   1        ; offset: $0 (0)
  465. reservedH1                 ds.l   1        ; offset: $4 (4)
  466. reservedH2                 ds.l   1        ; offset: $8 (8)
  467. ioCompletion             ds.l   1        ; offset: $C (12)
  468. ioResult                 ds.w   1        ; offset: $10 (16)
  469. saveA5                     ds.l   1        ; offset: $12 (18)
  470. reqCode                     ds.w   1        ; offset: $16 (22)
  471. contextRef                 ds.l   1        ; offset: $18 (24)
  472. queue                     ds.l   1        ; offset: $1C (28)
  473. identity                 ds.l   1        ; offset: $20 (32)
  474. filter                     ds.l   1        ; offset: $24 (36)
  475. newQueueRef                 ds.l   1        ; offset: $28 (40)
  476. notificationProc         ds.l   1        ; offset: $2C (44)
  477. userData                 ds.l   1        ; offset: $30 (48)
  478. noteType                 ds.b   1        ; offset: $34 (52)
  479. padByte                     ds.b   1        ; offset: $35 (53)
  480. reserved                 ds.l   1        ; offset: $36 (54)
  481. reserved2                 ds.l   1        ; offset: $3A (58)
  482. sizeof                     EQU *            ; size:   $3E (62)
  483.                         ENDR
  484.  
  485. ; typedef struct IPMOpenQueuePB  IPMOpenQueuePB
  486. IPMCloseQueuePB         RECORD    0
  487. qLink                     ds.l   1        ; offset: $0 (0)
  488. reservedH1                 ds.l   1        ; offset: $4 (4)
  489. reservedH2                 ds.l   1        ; offset: $8 (8)
  490. ioCompletion             ds.l   1        ; offset: $C (12)
  491. ioResult                 ds.w   1        ; offset: $10 (16)
  492. saveA5                     ds.l   1        ; offset: $12 (18)
  493. reqCode                     ds.w   1        ; offset: $16 (22)
  494. queueRef                 ds.l   1        ; offset: $18 (24)
  495. sizeof                     EQU *            ; size:   $1C (28)
  496.                         ENDR
  497.  
  498. ; typedef struct IPMCloseQueuePB  IPMCloseQueuePB
  499. IPMEnumerateQueuePB     RECORD    0
  500. qLink                     ds.l   1        ; offset: $0 (0)
  501. reservedH1                 ds.l   1        ; offset: $4 (4)
  502. reservedH2                 ds.l   1        ; offset: $8 (8)
  503. ioCompletion             ds.l   1        ; offset: $C (12)
  504. ioResult                 ds.w   1        ; offset: $10 (16)
  505. saveA5                     ds.l   1        ; offset: $12 (18)
  506. reqCode                     ds.w   1        ; offset: $16 (22)
  507. queueRef                 ds.l   1        ; offset: $18 (24)
  508. startSeqNum                 ds.l   1        ; offset: $1C (28)
  509. getProcHint                 ds.b   1        ; offset: $20 (32)
  510. getMsgType                 ds.b   1        ; offset: $21 (33)
  511. filler                     ds.w   1        ; offset: $22 (34)
  512. filter                     ds.l   1        ; offset: $24 (36)
  513. numToGet                 ds.w   1        ; offset: $28 (40)
  514. numGotten                 ds.w   1        ; offset: $2A (42)
  515. enumCount                 ds.l   1        ; offset: $2C (44)
  516. enumBuffer                 ds.l   1        ; offset: $30 (48)        ; will be packed array of IPMMsgInfo 
  517. actEnumCount             ds.l   1        ; offset: $34 (52)
  518. sizeof                     EQU *            ; size:   $38 (56)
  519.                         ENDR
  520.  
  521. ; typedef struct IPMEnumerateQueuePB  IPMEnumerateQueuePB
  522. ; typedef IPMEnumerateQueuePB  IPMChangeQueueFilterPB
  523. IPMDeleteMsgRangePB     RECORD    0
  524. qLink                     ds.l   1        ; offset: $0 (0)
  525. reservedH1                 ds.l   1        ; offset: $4 (4)
  526. reservedH2                 ds.l   1        ; offset: $8 (8)
  527. ioCompletion             ds.l   1        ; offset: $C (12)
  528. ioResult                 ds.w   1        ; offset: $10 (16)
  529. saveA5                     ds.l   1        ; offset: $12 (18)
  530. reqCode                     ds.w   1        ; offset: $16 (22)
  531. queueRef                 ds.l   1        ; offset: $18 (24)
  532. startSeqNum                 ds.l   1        ; offset: $1C (28)
  533. endSeqNum                 ds.l   1        ; offset: $20 (32)
  534. lastSeqNum                 ds.l   1        ; offset: $24 (36)
  535. sizeof                     EQU *            ; size:   $28 (40)
  536.                         ENDR
  537.  
  538. ; typedef struct IPMDeleteMsgRangePB  IPMDeleteMsgRangePB
  539. IPMOpenMsgPB             RECORD    0
  540. qLink                     ds.l   1        ; offset: $0 (0)
  541. reservedH1                 ds.l   1        ; offset: $4 (4)
  542. reservedH2                 ds.l   1        ; offset: $8 (8)
  543. ioCompletion             ds.l   1        ; offset: $C (12)
  544. ioResult                 ds.w   1        ; offset: $10 (16)
  545. saveA5                     ds.l   1        ; offset: $12 (18)
  546. reqCode                     ds.w   1        ; offset: $16 (22)
  547. queueRef                 ds.l   1        ; offset: $18 (24)
  548. sequenceNum                 ds.l   1        ; offset: $1C (28)
  549. newMsgRef                 ds.l   1        ; offset: $20 (32)
  550. actualSeqNum             ds.l   1        ; offset: $24 (36)
  551. exactMatch                 ds.b   1        ; offset: $28 (40)
  552. padByte                     ds.b   1        ; offset: $29 (41)
  553. reserved                 ds.l   1        ; offset: $2A (42)
  554. sizeof                     EQU *            ; size:   $2E (46)
  555.                         ENDR
  556.  
  557. ; typedef struct IPMOpenMsgPB  IPMOpenMsgPB
  558. IPMOpenHFSMsgPB         RECORD    0
  559. qLink                     ds.l   1        ; offset: $0 (0)
  560. reservedH1                 ds.l   1        ; offset: $4 (4)
  561. reservedH2                 ds.l   1        ; offset: $8 (8)
  562. ioCompletion             ds.l   1        ; offset: $C (12)
  563. ioResult                 ds.w   1        ; offset: $10 (16)
  564. saveA5                     ds.l   1        ; offset: $12 (18)
  565. reqCode                     ds.w   1        ; offset: $16 (22)
  566. hfsPath                     ds.l   1        ; offset: $18 (24)
  567. filler                     ds.l   1        ; offset: $1C (28)
  568. newMsgRef                 ds.l   1        ; offset: $20 (32)
  569. filler2                     ds.l   1        ; offset: $24 (36)
  570. filler3                     ds.b   1        ; offset: $28 (40)
  571. filler4                     ds.b   1        ; offset: $29 (41)
  572. reserved                 ds.l   1        ; offset: $2A (42)
  573. sizeof                     EQU *            ; size:   $2E (46)
  574.                         ENDR
  575.  
  576. ; typedef struct IPMOpenHFSMsgPB  IPMOpenHFSMsgPB
  577. IPMOpenBlockAsMsgPB     RECORD    0
  578. qLink                     ds.l   1        ; offset: $0 (0)
  579. reservedH1                 ds.l   1        ; offset: $4 (4)
  580. reservedH2                 ds.l   1        ; offset: $8 (8)
  581. ioCompletion             ds.l   1        ; offset: $C (12)
  582. ioResult                 ds.w   1        ; offset: $10 (16)
  583. saveA5                     ds.l   1        ; offset: $12 (18)
  584. reqCode                     ds.w   1        ; offset: $16 (22)
  585. msgRef                     ds.l   1        ; offset: $18 (24)
  586. filler                     ds.l   1        ; offset: $1C (28)
  587. newMsgRef                 ds.l   1        ; offset: $20 (32)
  588. filler2                     ds.w   7        ; offset: $24 (36)
  589. blockIndex                 ds.w   1        ; offset: $32 (50)
  590. sizeof                     EQU *            ; size:   $34 (52)
  591.                         ENDR
  592.  
  593. ; typedef struct IPMOpenBlockAsMsgPB  IPMOpenBlockAsMsgPB
  594. IPMCloseMsgPB             RECORD    0
  595. qLink                     ds.l   1        ; offset: $0 (0)
  596. reservedH1                 ds.l   1        ; offset: $4 (4)
  597. reservedH2                 ds.l   1        ; offset: $8 (8)
  598. ioCompletion             ds.l   1        ; offset: $C (12)
  599. ioResult                 ds.w   1        ; offset: $10 (16)
  600. saveA5                     ds.l   1        ; offset: $12 (18)
  601. reqCode                     ds.w   1        ; offset: $16 (22)
  602. msgRef                     ds.l   1        ; offset: $18 (24)
  603. deleteMsg                 ds.b   1        ; offset: $1C (28)
  604. filler1                     ds.b   1        ; offset: $1D (29)
  605. sizeof                     EQU *            ; size:   $1E (30)
  606.                         ENDR
  607.  
  608. ; typedef struct IPMCloseMsgPB  IPMCloseMsgPB
  609. IPMGetMsgInfoPB         RECORD    0
  610. qLink                     ds.l   1        ; offset: $0 (0)
  611. reservedH1                 ds.l   1        ; offset: $4 (4)
  612. reservedH2                 ds.l   1        ; offset: $8 (8)
  613. ioCompletion             ds.l   1        ; offset: $C (12)
  614. ioResult                 ds.w   1        ; offset: $10 (16)
  615. saveA5                     ds.l   1        ; offset: $12 (18)
  616. reqCode                     ds.w   1        ; offset: $16 (22)
  617. msgRef                     ds.l   1        ; offset: $18 (24)
  618. info                     ds.l   1        ; offset: $1C (28)
  619. sizeof                     EQU *            ; size:   $20 (32)
  620.                         ENDR
  621.  
  622. ; typedef struct IPMGetMsgInfoPB  IPMGetMsgInfoPB
  623. IPMReadHeaderPB         RECORD    0
  624. qLink                     ds.l   1        ; offset: $0 (0)
  625. reservedH1                 ds.l   1        ; offset: $4 (4)
  626. reservedH2                 ds.l   1        ; offset: $8 (8)
  627. ioCompletion             ds.l   1        ; offset: $C (12)
  628. ioResult                 ds.w   1        ; offset: $10 (16)
  629. saveA5                     ds.l   1        ; offset: $12 (18)
  630. reqCode                     ds.w   1        ; offset: $16 (22)
  631. msgRef                     ds.l   1        ; offset: $18 (24)
  632. fieldSelector             ds.w   1        ; offset: $1C (28)
  633. offset                     ds.l   1        ; offset: $1E (30)
  634. count                     ds.l   1        ; offset: $22 (34)
  635. buffer                     ds.l   1        ; offset: $26 (38)
  636. actualCount                 ds.l   1        ; offset: $2A (42)
  637. filler                     ds.w   1        ; offset: $2E (46)
  638. remaining                 ds.l   1        ; offset: $30 (48)
  639. sizeof                     EQU *            ; size:   $34 (52)
  640.                         ENDR
  641.  
  642. ; typedef struct IPMReadHeaderPB  IPMReadHeaderPB
  643. IPMReadRecipientPB         RECORD    0
  644. qLink                     ds.l   1        ; offset: $0 (0)
  645. reservedH1                 ds.l   1        ; offset: $4 (4)
  646. reservedH2                 ds.l   1        ; offset: $8 (8)
  647. ioCompletion             ds.l   1        ; offset: $C (12)
  648. ioResult                 ds.w   1        ; offset: $10 (16)
  649. saveA5                     ds.l   1        ; offset: $12 (18)
  650. reqCode                     ds.w   1        ; offset: $16 (22)
  651. msgRef                     ds.l   1        ; offset: $18 (24)
  652. rcptIndex                 ds.w   1        ; offset: $1C (28)
  653. offset                     ds.l   1        ; offset: $1E (30)
  654. count                     ds.l   1        ; offset: $22 (34)
  655. buffer                     ds.l   1        ; offset: $26 (38)
  656. actualCount                 ds.l   1        ; offset: $2A (42)
  657. reserved                 ds.w   1        ; offset: $2E (46)        ; must be zero 
  658. remaining                 ds.l   1        ; offset: $30 (48)
  659. originalIndex             ds.w   1        ; offset: $34 (52)
  660. recipientOffsetFlags     ds.b   1        ; offset: $36 (54)
  661. filler1                     ds.b   1        ; offset: $37 (55)
  662. sizeof                     EQU *            ; size:   $38 (56)
  663.                         ENDR
  664.  
  665. ; typedef struct IPMReadRecipientPB  IPMReadRecipientPB
  666. ;
  667. ;replyQueue works like recipient. [can no longer read it via ReadHeader]
  668. ;OriginalIndex is meaningless, rcptFlags are used seperately and there are
  669. ;currently none defined.
  670. ;
  671. ; typedef IPMReadRecipientPB  IPMReadReplyQueuePB
  672. IPMGetBlkIndexPB         RECORD    0
  673. qLink                     ds.l   1        ; offset: $0 (0)
  674. reservedH1                 ds.l   1        ; offset: $4 (4)
  675. reservedH2                 ds.l   1        ; offset: $8 (8)
  676. ioCompletion             ds.l   1        ; offset: $C (12)
  677. ioResult                 ds.w   1        ; offset: $10 (16)
  678. saveA5                     ds.l   1        ; offset: $12 (18)
  679. reqCode                     ds.w   1        ; offset: $16 (22)
  680. msgRef                     ds.l   1        ; offset: $18 (24)
  681. blockType                 ds.l   2        ; offset: $1C (28)
  682. index                     ds.w   1        ; offset: $24 (36)
  683. startingFrom             ds.w   1        ; offset: $26 (38)
  684. actualBlockType             ds.l   2        ; offset: $28 (40)
  685. actualBlockIndex         ds.w   1        ; offset: $30 (48)
  686. sizeof                     EQU *            ; size:   $32 (50)
  687.                         ENDR
  688.  
  689. ; typedef struct IPMGetBlkIndexPB  IPMGetBlkIndexPB
  690. IPMReadMsgPB             RECORD    0
  691. qLink                     ds.l   1        ; offset: $0 (0)
  692. reservedH1                 ds.l   1        ; offset: $4 (4)
  693. reservedH2                 ds.l   1        ; offset: $8 (8)
  694. ioCompletion             ds.l   1        ; offset: $C (12)
  695. ioResult                 ds.w   1        ; offset: $10 (16)
  696. saveA5                     ds.l   1        ; offset: $12 (18)
  697. reqCode                     ds.w   1        ; offset: $16 (22)
  698. msgRef                     ds.l   1        ; offset: $18 (24)
  699. mode                     ds.w   1        ; offset: $1C (28)
  700. offset                     ds.l   1        ; offset: $1E (30)
  701. count                     ds.l   1        ; offset: $22 (34)
  702. buffer                     ds.l   1        ; offset: $26 (38)
  703. actualCount                 ds.l   1        ; offset: $2A (42)
  704. blockIndex                 ds.w   1        ; offset: $2E (46)
  705. remaining                 ds.l   1        ; offset: $30 (48)
  706. sizeof                     EQU *            ; size:   $34 (52)
  707.                         ENDR
  708.  
  709. ; typedef struct IPMReadMsgPB  IPMReadMsgPB
  710. IPMVerifySignaturePB     RECORD    0
  711. qLink                     ds.l   1        ; offset: $0 (0)
  712. reservedH1                 ds.l   1        ; offset: $4 (4)
  713. reservedH2                 ds.l   1        ; offset: $8 (8)
  714. ioCompletion             ds.l   1        ; offset: $C (12)
  715. ioResult                 ds.w   1        ; offset: $10 (16)
  716. saveA5                     ds.l   1        ; offset: $12 (18)
  717. reqCode                     ds.w   1        ; offset: $16 (22)
  718. msgRef                     ds.l   1        ; offset: $18 (24)
  719. signatureContext         ds.l   1        ; offset: $1C (28)
  720. sizeof                     EQU *            ; size:   $20 (32)
  721.                         ENDR
  722.  
  723. ; typedef struct IPMVerifySignaturePB  IPMVerifySignaturePB
  724. IPMNewMsgPB             RECORD    0
  725. qLink                     ds.l   1        ; offset: $0 (0)
  726. reservedH1                 ds.l   1        ; offset: $4 (4)
  727. reservedH2                 ds.l   1        ; offset: $8 (8)
  728. ioCompletion             ds.l   1        ; offset: $C (12)
  729. ioResult                 ds.w   1        ; offset: $10 (16)
  730. saveA5                     ds.l   1        ; offset: $12 (18)
  731. reqCode                     ds.w   1        ; offset: $16 (22)
  732. filler                     ds.l   1        ; offset: $18 (24)
  733. recipient                 ds.l   1        ; offset: $1C (28)
  734. replyQueue                 ds.l   1        ; offset: $20 (32)
  735. procHint                 ds.l   1        ; offset: $24 (36)
  736. filler2                     ds.w   1        ; offset: $28 (40)
  737. msgType                     ds.l   1        ; offset: $2A (42)
  738. refCon                     ds.l   1        ; offset: $2E (46)
  739. newMsgRef                 ds.l   1        ; offset: $32 (50)
  740. filler3                     ds.w   1        ; offset: $36 (54)
  741. filler4                     ds.l   1        ; offset: $38 (56)
  742. identity                 ds.l   1        ; offset: $3C (60)
  743. sender                     ds.l   1        ; offset: $40 (64)
  744. internalUse                 ds.l   1        ; offset: $44 (68)
  745. internalUse2             ds.l   1        ; offset: $48 (72)
  746. sizeof                     EQU *            ; size:   $4C (76)
  747.                         ENDR
  748.  
  749. ; typedef struct IPMNewMsgPB  IPMNewMsgPB
  750. IPMNewHFSMsgPB             RECORD    0
  751. qLink                     ds.l   1        ; offset: $0 (0)
  752. reservedH1                 ds.l   1        ; offset: $4 (4)
  753. reservedH2                 ds.l   1        ; offset: $8 (8)
  754. ioCompletion             ds.l   1        ; offset: $C (12)
  755. ioResult                 ds.w   1        ; offset: $10 (16)
  756. saveA5                     ds.l   1        ; offset: $12 (18)
  757. reqCode                     ds.w   1        ; offset: $16 (22)
  758. hfsPath                     ds.l   1        ; offset: $18 (24)
  759. recipient                 ds.l   1        ; offset: $1C (28)
  760. replyQueue                 ds.l   1        ; offset: $20 (32)
  761. procHint                 ds.l   1        ; offset: $24 (36)
  762. filler2                     ds.w   1        ; offset: $28 (40)
  763. msgType                     ds.l   1        ; offset: $2A (42)
  764. refCon                     ds.l   1        ; offset: $2E (46)
  765. newMsgRef                 ds.l   1        ; offset: $32 (50)
  766. filler3                     ds.w   1        ; offset: $36 (54)
  767. filler4                     ds.l   1        ; offset: $38 (56)
  768. identity                 ds.l   1        ; offset: $3C (60)
  769. sender                     ds.l   1        ; offset: $40 (64)
  770. internalUse                 ds.l   1        ; offset: $44 (68)
  771. internalUse2             ds.l   1        ; offset: $48 (72)
  772. sizeof                     EQU *            ; size:   $4C (76)
  773.                         ENDR
  774.  
  775. ; typedef struct IPMNewHFSMsgPB  IPMNewHFSMsgPB
  776. IPMNestMsgPB             RECORD    0
  777. qLink                     ds.l   1        ; offset: $0 (0)
  778. reservedH1                 ds.l   1        ; offset: $4 (4)
  779. reservedH2                 ds.l   1        ; offset: $8 (8)
  780. ioCompletion             ds.l   1        ; offset: $C (12)
  781. ioResult                 ds.w   1        ; offset: $10 (16)
  782. saveA5                     ds.l   1        ; offset: $12 (18)
  783. reqCode                     ds.w   1        ; offset: $16 (22)
  784. msgRef                     ds.l   1        ; offset: $18 (24)
  785. filler                     ds.w   9        ; offset: $1C (28)
  786. refCon                     ds.l   1        ; offset: $2E (46)
  787. msgToNest                 ds.l   1        ; offset: $32 (50)
  788. filler2                     ds.w   1        ; offset: $36 (54)
  789. startingOffset             ds.l   1        ; offset: $38 (56)
  790. sizeof                     EQU *            ; size:   $3C (60)
  791.                         ENDR
  792.  
  793. ; typedef struct IPMNestMsgPB  IPMNestMsgPB
  794. IPMNewNestedMsgBlockPB     RECORD    0
  795. qLink                     ds.l   1        ; offset: $0 (0)
  796. reservedH1                 ds.l   1        ; offset: $4 (4)
  797. reservedH2                 ds.l   1        ; offset: $8 (8)
  798. ioCompletion             ds.l   1        ; offset: $C (12)
  799. ioResult                 ds.w   1        ; offset: $10 (16)
  800. saveA5                     ds.l   1        ; offset: $12 (18)
  801. reqCode                     ds.w   1        ; offset: $16 (22)
  802. msgRef                     ds.l   1        ; offset: $18 (24)
  803. recipient                 ds.l   1        ; offset: $1C (28)
  804. replyQueue                 ds.l   1        ; offset: $20 (32)
  805. procHint                 ds.l   1        ; offset: $24 (36)
  806. filler1                     ds.w   1        ; offset: $28 (40)
  807. msgType                     ds.l   1        ; offset: $2A (42)
  808. refCon                     ds.l   1        ; offset: $2E (46)
  809. newMsgRef                 ds.l   1        ; offset: $32 (50)
  810. filler2                     ds.w   1        ; offset: $36 (54)
  811. startingOffset             ds.l   1        ; offset: $38 (56)
  812. identity                 ds.l   1        ; offset: $3C (60)
  813. sender                     ds.l   1        ; offset: $40 (64)
  814. internalUse                 ds.l   1        ; offset: $44 (68)
  815. internalUse2             ds.l   1        ; offset: $48 (72)
  816. sizeof                     EQU *            ; size:   $4C (76)
  817.                         ENDR
  818.  
  819. ; typedef struct IPMNewNestedMsgBlockPB  IPMNewNestedMsgBlockPB
  820. IPMEndMsgPB             RECORD    0
  821. qLink                     ds.l   1        ; offset: $0 (0)
  822. reservedH1                 ds.l   1        ; offset: $4 (4)
  823. reservedH2                 ds.l   1        ; offset: $8 (8)
  824. ioCompletion             ds.l   1        ; offset: $C (12)
  825. ioResult                 ds.w   1        ; offset: $10 (16)
  826. saveA5                     ds.l   1        ; offset: $12 (18)
  827. reqCode                     ds.w   1        ; offset: $16 (22)
  828. msgRef                     ds.l   1        ; offset: $18 (24)
  829. msgID                     ds     IPMMsgID ; offset: $1C (28)
  830. msgTitle                 ds.l   1        ; offset: $2C (44)
  831. deliveryNotification     ds.b   1        ; offset: $30 (48)
  832. priority                 ds.b   1        ; offset: $31 (49)
  833. cancel                     ds.b   1        ; offset: $32 (50)
  834. padByte                     ds.b   1        ; offset: $33 (51)
  835. reserved                 ds.l   1        ; offset: $34 (52)
  836. signature                 ds.l   1        ; offset: $38 (56)
  837. signatureSize             ds.l   1        ; offset: $3C (60)
  838. signatureContext         ds.l   1        ; offset: $40 (64)
  839. ; family this msg belongs (e.g. mail) use kIPMFamilyUnspecified by default 
  840. family                     ds.l   1        ; offset: $44 (68)
  841. sizeof                     EQU *            ; size:   $48 (72)
  842.                         ENDR
  843.  
  844. ; typedef struct IPMEndMsgPB  IPMEndMsgPB
  845. IPMAddRecipientPB         RECORD    0
  846. qLink                     ds.l   1        ; offset: $0 (0)
  847. reservedH1                 ds.l   1        ; offset: $4 (4)
  848. reservedH2                 ds.l   1        ; offset: $8 (8)
  849. ioCompletion             ds.l   1        ; offset: $C (12)
  850. ioResult                 ds.w   1        ; offset: $10 (16)
  851. saveA5                     ds.l   1        ; offset: $12 (18)
  852. reqCode                     ds.w   1        ; offset: $16 (22)
  853. msgRef                     ds.l   1        ; offset: $18 (24)
  854. recipient                 ds.l   1        ; offset: $1C (28)
  855. reserved                 ds.l   1        ; offset: $20 (32)
  856. sizeof                     EQU *            ; size:   $24 (36)
  857.                         ENDR
  858.  
  859. ; typedef struct IPMAddRecipientPB  IPMAddRecipientPB
  860. IPMAddReplyQueuePB         RECORD    0
  861. qLink                     ds.l   1        ; offset: $0 (0)
  862. reservedH1                 ds.l   1        ; offset: $4 (4)
  863. reservedH2                 ds.l   1        ; offset: $8 (8)
  864. ioCompletion             ds.l   1        ; offset: $C (12)
  865. ioResult                 ds.w   1        ; offset: $10 (16)
  866. saveA5                     ds.l   1        ; offset: $12 (18)
  867. reqCode                     ds.w   1        ; offset: $16 (22)
  868. msgRef                     ds.l   1        ; offset: $18 (24)
  869. filler                     ds.l   1        ; offset: $1C (28)
  870. replyQueue                 ds.l   1        ; offset: $20 (32)
  871. sizeof                     EQU *            ; size:   $24 (36)
  872.                         ENDR
  873.  
  874. ; typedef struct IPMAddReplyQueuePB  IPMAddReplyQueuePB
  875. IPMNewBlockPB             RECORD    0
  876. qLink                     ds.l   1        ; offset: $0 (0)
  877. reservedH1                 ds.l   1        ; offset: $4 (4)
  878. reservedH2                 ds.l   1        ; offset: $8 (8)
  879. ioCompletion             ds.l   1        ; offset: $C (12)
  880. ioResult                 ds.w   1        ; offset: $10 (16)
  881. saveA5                     ds.l   1        ; offset: $12 (18)
  882. reqCode                     ds.w   1        ; offset: $16 (22)
  883. msgRef                     ds.l   1        ; offset: $18 (24)
  884. blockType                 ds.l   2        ; offset: $1C (28)
  885. filler                     ds.w   5        ; offset: $24 (36)
  886. refCon                     ds.l   1        ; offset: $2E (46)
  887. filler2                     ds.w   3        ; offset: $32 (50)
  888. startingOffset             ds.l   1        ; offset: $38 (56)
  889. sizeof                     EQU *            ; size:   $3C (60)
  890.                         ENDR
  891.  
  892. ; typedef struct IPMNewBlockPB  IPMNewBlockPB
  893. IPMWriteMsgPB             RECORD    0
  894. qLink                     ds.l   1        ; offset: $0 (0)
  895. reservedH1                 ds.l   1        ; offset: $4 (4)
  896. reservedH2                 ds.l   1        ; offset: $8 (8)
  897. ioCompletion             ds.l   1        ; offset: $C (12)
  898. ioResult                 ds.w   1        ; offset: $10 (16)
  899. saveA5                     ds.l   1        ; offset: $12 (18)
  900. reqCode                     ds.w   1        ; offset: $16 (22)
  901. msgRef                     ds.l   1        ; offset: $18 (24)
  902. mode                     ds.w   1        ; offset: $1C (28)
  903. offset                     ds.l   1        ; offset: $1E (30)
  904. count                     ds.l   1        ; offset: $22 (34)
  905. buffer                     ds.l   1        ; offset: $26 (38)
  906. actualCount                 ds.l   1        ; offset: $2A (42)
  907. currentBlock             ds.b   1        ; offset: $2E (46)
  908. filler1                     ds.b   1        ; offset: $2F (47)
  909. sizeof                     EQU *            ; size:   $30 (48)
  910.                         ENDR
  911.  
  912. ; typedef struct IPMWriteMsgPB  IPMWriteMsgPB
  913. IPMParamBlock             RECORD    0
  914. qLink                     ds.l   1        ; offset: $0 (0)
  915. reservedH1                 ds.l   1        ; offset: $4 (4)
  916. reservedH2                 ds.l   1        ; offset: $8 (8)
  917. ioCompletion             ds.l   1        ; offset: $C (12)
  918. ioResult                 ds.w   1        ; offset: $10 (16)
  919. saveA5                     ds.l   1        ; offset: $12 (18)
  920. reqCode                     ds.w   1        ; offset: $16 (22)
  921.                          ORG 0
  922. openContextPB             ds     IPMOpenContextPB ; offset: $0 (0)
  923.                          ORG 0
  924. closeContextPB             ds.l   7        ; offset: $0 (0)
  925.                          ORG 0
  926. createQueuePB             ds     IPMCreateQueuePB ; offset: $0 (0)
  927.                          ORG 0
  928. deleteQueuePB             ds.l   10        ; offset: $0 (0)
  929.                          ORG 0
  930. openQueuePB                 ds     IPMOpenQueuePB ; offset: $0 (0)
  931.                          ORG 0
  932. closeQueuePB             ds     IPMCloseQueuePB ; offset: $0 (0)
  933.                          ORG 0
  934. enumerateQueuePB         ds     IPMEnumerateQueuePB ; offset: $0 (0)
  935.                          ORG 0
  936. changeQueueFilterPB         ds.l   14        ; offset: $0 (0)
  937.                          ORG 0
  938. deleteMsgRangePB         ds     IPMDeleteMsgRangePB ; offset: $0 (0)
  939.                          ORG 0
  940. openMsgPB                 ds     IPMOpenMsgPB ; offset: $0 (0)
  941.                          ORG 0
  942. openHFSMsgPB             ds     IPMOpenHFSMsgPB ; offset: $0 (0)
  943.                          ORG 0
  944. openBlockAsMsgPB         ds     IPMOpenBlockAsMsgPB ; offset: $0 (0)
  945.                          ORG 0
  946. closeMsgPB                 ds     IPMCloseMsgPB ; offset: $0 (0)
  947.                          ORG 0
  948. getMsgInfoPB             ds     IPMGetMsgInfoPB ; offset: $0 (0)
  949.                          ORG 0
  950. readHeaderPB             ds     IPMReadHeaderPB ; offset: $0 (0)
  951.                          ORG 0
  952. readRecipientPB             ds     IPMReadRecipientPB ; offset: $0 (0)
  953.                          ORG 0
  954. readReplyQueuePB         ds.l   14        ; offset: $0 (0)
  955.                          ORG 0
  956. getBlkIndexPB             ds     IPMGetBlkIndexPB ; offset: $0 (0)
  957.                          ORG 0
  958. readMsgPB                 ds     IPMReadMsgPB ; offset: $0 (0)
  959.                          ORG 0
  960. verifySignaturePB         ds     IPMVerifySignaturePB ; offset: $0 (0)
  961.                          ORG 0
  962. newMsgPB                 ds     IPMNewMsgPB ; offset: $0 (0)
  963.                          ORG 0
  964. newHFSMsgPB                 ds     IPMNewHFSMsgPB ; offset: $0 (0)
  965.                          ORG 0
  966. nestMsgPB                 ds     IPMNestMsgPB ; offset: $0 (0)
  967.                          ORG 0
  968. newNestedMsgBlockPB         ds     IPMNewNestedMsgBlockPB ; offset: $0 (0)
  969.                          ORG 0
  970. endMsgPB                 ds     IPMEndMsgPB ; offset: $0 (0)
  971.                          ORG 0
  972. addRecipientPB             ds     IPMAddRecipientPB ; offset: $0 (0)
  973.                          ORG 0
  974. addReplyQueuePB             ds     IPMAddReplyQueuePB ; offset: $0 (0)
  975.                          ORG 0
  976. newBlockPB                 ds     IPMNewBlockPB ; offset: $0 (0)
  977.                          ORG 0
  978. writeMsgPB                 ds     IPMWriteMsgPB ; offset: $0 (0)
  979.                          ORG 76
  980. sizeof                     EQU *            ; size:   $4C (76)
  981.                         ENDR
  982.  
  983. ;
  984. ; pascal OSErr IPMOpenContext(IPMParamBlockPtr paramBlock, Boolean async)
  985. ;
  986.     IF ¬ GENERATINGCFM THEN
  987.         Macro
  988.         _IPMOpenContext
  989.             move.w    #$400,-(sp)
  990.             dc.w     $AA5E
  991.         EndM
  992.     ELSE
  993.         IMPORT_CFM_FUNCTION    IPMOpenContext
  994.     ENDIF
  995.  
  996. ;
  997. ; pascal OSErr IPMCloseContext(IPMParamBlockPtr paramBlock, Boolean async)
  998. ;
  999.     IF ¬ GENERATINGCFM THEN
  1000.         Macro
  1001.         _IPMCloseContext
  1002.             move.w    #$401,-(sp)
  1003.             dc.w     $AA5E
  1004.         EndM
  1005.     ELSE
  1006.         IMPORT_CFM_FUNCTION    IPMCloseContext
  1007.     ENDIF
  1008.  
  1009. ;
  1010. ; pascal OSErr IPMNewMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1011. ;
  1012.     IF ¬ GENERATINGCFM THEN
  1013.         Macro
  1014.         _IPMNewMsg
  1015.             move.w    #$402,-(sp)
  1016.             dc.w     $AA5E
  1017.         EndM
  1018.     ELSE
  1019.         IMPORT_CFM_FUNCTION    IPMNewMsg
  1020.     ENDIF
  1021.  
  1022. ;
  1023. ; pascal OSErr IPMNewBlock(IPMParamBlockPtr paramBlock, Boolean async)
  1024. ;
  1025.     IF ¬ GENERATINGCFM THEN
  1026.         Macro
  1027.         _IPMNewBlock
  1028.             move.w    #$404,-(sp)
  1029.             dc.w     $AA5E
  1030.         EndM
  1031.     ELSE
  1032.         IMPORT_CFM_FUNCTION    IPMNewBlock
  1033.     ENDIF
  1034.  
  1035. ;
  1036. ; pascal OSErr IPMNewNestedMsgBlock(IPMParamBlockPtr paramBlock, Boolean async)
  1037. ;
  1038.     IF ¬ GENERATINGCFM THEN
  1039.         Macro
  1040.         _IPMNewNestedMsgBlock
  1041.             move.w    #$405,-(sp)
  1042.             dc.w     $AA5E
  1043.         EndM
  1044.     ELSE
  1045.         IMPORT_CFM_FUNCTION    IPMNewNestedMsgBlock
  1046.     ENDIF
  1047.  
  1048. ;
  1049. ; pascal OSErr IPMNestMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1050. ;
  1051.     IF ¬ GENERATINGCFM THEN
  1052.         Macro
  1053.         _IPMNestMsg
  1054.             move.w    #$406,-(sp)
  1055.             dc.w     $AA5E
  1056.         EndM
  1057.     ELSE
  1058.         IMPORT_CFM_FUNCTION    IPMNestMsg
  1059.     ENDIF
  1060.  
  1061. ;
  1062. ; pascal OSErr IPMWriteMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1063. ;
  1064.     IF ¬ GENERATINGCFM THEN
  1065.         Macro
  1066.         _IPMWriteMsg
  1067.             move.w    #$407,-(sp)
  1068.             dc.w     $AA5E
  1069.         EndM
  1070.     ELSE
  1071.         IMPORT_CFM_FUNCTION    IPMWriteMsg
  1072.     ENDIF
  1073.  
  1074. ;
  1075. ; pascal OSErr IPMEndMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1076. ;
  1077.     IF ¬ GENERATINGCFM THEN
  1078.         Macro
  1079.         _IPMEndMsg
  1080.             move.w    #$408,-(sp)
  1081.             dc.w     $AA5E
  1082.         EndM
  1083.     ELSE
  1084.         IMPORT_CFM_FUNCTION    IPMEndMsg
  1085.     ENDIF
  1086.  
  1087. ;
  1088. ; pascal OSErr IPMOpenQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1089. ;
  1090.     IF ¬ GENERATINGCFM THEN
  1091.         Macro
  1092.         _IPMOpenQueue
  1093.             move.w    #$409,-(sp)
  1094.             dc.w     $AA5E
  1095.         EndM
  1096.     ELSE
  1097.         IMPORT_CFM_FUNCTION    IPMOpenQueue
  1098.     ENDIF
  1099.  
  1100. ;
  1101. ; pascal OSErr IPMCloseQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1102. ;
  1103.     IF ¬ GENERATINGCFM THEN
  1104.         Macro
  1105.         _IPMCloseQueue
  1106.             move.w    #$40A,-(sp)
  1107.             dc.w     $AA5E
  1108.         EndM
  1109.     ELSE
  1110.         IMPORT_CFM_FUNCTION    IPMCloseQueue
  1111.     ENDIF
  1112.  
  1113. ; Always synchronous 
  1114. ;
  1115. ; pascal OSErr IPMVerifySignature(IPMParamBlockPtr paramBlock)
  1116. ;
  1117.     IF ¬ GENERATINGCFM THEN
  1118.         Macro
  1119.         _IPMVerifySignature
  1120.             moveq    #0,d0
  1121.             dc.w     $1F00
  1122.             move.w    #$422,-(sp)
  1123.             dc.w     $AA5E
  1124.         EndM
  1125.     ELSE
  1126.         IMPORT_CFM_FUNCTION    IPMVerifySignature
  1127.     ENDIF
  1128.  
  1129. ;
  1130. ; pascal OSErr IPMOpenMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1131. ;
  1132.     IF ¬ GENERATINGCFM THEN
  1133.         Macro
  1134.         _IPMOpenMsg
  1135.             move.w    #$40B,-(sp)
  1136.             dc.w     $AA5E
  1137.         EndM
  1138.     ELSE
  1139.         IMPORT_CFM_FUNCTION    IPMOpenMsg
  1140.     ENDIF
  1141.  
  1142. ;
  1143. ; pascal OSErr IPMCloseMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1144. ;
  1145.     IF ¬ GENERATINGCFM THEN
  1146.         Macro
  1147.         _IPMCloseMsg
  1148.             move.w    #$40C,-(sp)
  1149.             dc.w     $AA5E
  1150.         EndM
  1151.     ELSE
  1152.         IMPORT_CFM_FUNCTION    IPMCloseMsg
  1153.     ENDIF
  1154.  
  1155. ;
  1156. ; pascal OSErr IPMReadMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1157. ;
  1158.     IF ¬ GENERATINGCFM THEN
  1159.         Macro
  1160.         _IPMReadMsg
  1161.             move.w    #$40D,-(sp)
  1162.             dc.w     $AA5E
  1163.         EndM
  1164.     ELSE
  1165.         IMPORT_CFM_FUNCTION    IPMReadMsg
  1166.     ENDIF
  1167.  
  1168. ;
  1169. ; pascal OSErr IPMReadHeader(IPMParamBlockPtr paramBlock, Boolean async)
  1170. ;
  1171.     IF ¬ GENERATINGCFM THEN
  1172.         Macro
  1173.         _IPMReadHeader
  1174.             move.w    #$40E,-(sp)
  1175.             dc.w     $AA5E
  1176.         EndM
  1177.     ELSE
  1178.         IMPORT_CFM_FUNCTION    IPMReadHeader
  1179.     ENDIF
  1180.  
  1181. ;
  1182. ; pascal OSErr IPMOpenBlockAsMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1183. ;
  1184.     IF ¬ GENERATINGCFM THEN
  1185.         Macro
  1186.         _IPMOpenBlockAsMsg
  1187.             move.w    #$40F,-(sp)
  1188.             dc.w     $AA5E
  1189.         EndM
  1190.     ELSE
  1191.         IMPORT_CFM_FUNCTION    IPMOpenBlockAsMsg
  1192.     ENDIF
  1193.  
  1194. ;
  1195. ; pascal OSErr IPMNewHFSMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1196. ;
  1197.     IF ¬ GENERATINGCFM THEN
  1198.         Macro
  1199.         _IPMNewHFSMsg
  1200.             move.w    #$41E,-(sp)
  1201.             dc.w     $AA5E
  1202.         EndM
  1203.     ELSE
  1204.         IMPORT_CFM_FUNCTION    IPMNewHFSMsg
  1205.     ENDIF
  1206.  
  1207. ;
  1208. ; pascal OSErr IPMReadRecipient(IPMParamBlockPtr paramBlock, Boolean async)
  1209. ;
  1210.     IF ¬ GENERATINGCFM THEN
  1211.         Macro
  1212.         _IPMReadRecipient
  1213.             move.w    #$410,-(sp)
  1214.             dc.w     $AA5E
  1215.         EndM
  1216.     ELSE
  1217.         IMPORT_CFM_FUNCTION    IPMReadRecipient
  1218.     ENDIF
  1219.  
  1220. ;
  1221. ; pascal OSErr IPMReadReplyQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1222. ;
  1223.     IF ¬ GENERATINGCFM THEN
  1224.         Macro
  1225.         _IPMReadReplyQueue
  1226.             move.w    #$421,-(sp)
  1227.             dc.w     $AA5E
  1228.         EndM
  1229.     ELSE
  1230.         IMPORT_CFM_FUNCTION    IPMReadReplyQueue
  1231.     ENDIF
  1232.  
  1233. ;
  1234. ; pascal OSErr IPMCreateQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1235. ;
  1236.     IF ¬ GENERATINGCFM THEN
  1237.         Macro
  1238.         _IPMCreateQueue
  1239.             move.w    #$411,-(sp)
  1240.             dc.w     $AA5E
  1241.         EndM
  1242.     ELSE
  1243.         IMPORT_CFM_FUNCTION    IPMCreateQueue
  1244.     ENDIF
  1245.  
  1246. ;
  1247. ; pascal OSErr IPMDeleteQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1248. ;
  1249.     IF ¬ GENERATINGCFM THEN
  1250.         Macro
  1251.         _IPMDeleteQueue
  1252.             move.w    #$412,-(sp)
  1253.             dc.w     $AA5E
  1254.         EndM
  1255.     ELSE
  1256.         IMPORT_CFM_FUNCTION    IPMDeleteQueue
  1257.     ENDIF
  1258.  
  1259. ;
  1260. ; pascal OSErr IPMEnumerateQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1261. ;
  1262.     IF ¬ GENERATINGCFM THEN
  1263.         Macro
  1264.         _IPMEnumerateQueue
  1265.             move.w    #$413,-(sp)
  1266.             dc.w     $AA5E
  1267.         EndM
  1268.     ELSE
  1269.         IMPORT_CFM_FUNCTION    IPMEnumerateQueue
  1270.     ENDIF
  1271.  
  1272. ;
  1273. ; pascal OSErr IPMChangeQueueFilter(IPMParamBlockPtr paramBlock, Boolean async)
  1274. ;
  1275.     IF ¬ GENERATINGCFM THEN
  1276.         Macro
  1277.         _IPMChangeQueueFilter
  1278.             move.w    #$414,-(sp)
  1279.             dc.w     $AA5E
  1280.         EndM
  1281.     ELSE
  1282.         IMPORT_CFM_FUNCTION    IPMChangeQueueFilter
  1283.     ENDIF
  1284.  
  1285. ;
  1286. ; pascal OSErr IPMDeleteMsgRange(IPMParamBlockPtr paramBlock, Boolean async)
  1287. ;
  1288.     IF ¬ GENERATINGCFM THEN
  1289.         Macro
  1290.         _IPMDeleteMsgRange
  1291.             move.w    #$415,-(sp)
  1292.             dc.w     $AA5E
  1293.         EndM
  1294.     ELSE
  1295.         IMPORT_CFM_FUNCTION    IPMDeleteMsgRange
  1296.     ENDIF
  1297.  
  1298. ;
  1299. ; pascal OSErr IPMAddRecipient(IPMParamBlockPtr paramBlock, Boolean async)
  1300. ;
  1301.     IF ¬ GENERATINGCFM THEN
  1302.         Macro
  1303.         _IPMAddRecipient
  1304.             move.w    #$403,-(sp)
  1305.             dc.w     $AA5E
  1306.         EndM
  1307.     ELSE
  1308.         IMPORT_CFM_FUNCTION    IPMAddRecipient
  1309.     ENDIF
  1310.  
  1311. ;
  1312. ; pascal OSErr IPMAddReplyQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1313. ;
  1314.     IF ¬ GENERATINGCFM THEN
  1315.         Macro
  1316.         _IPMAddReplyQueue
  1317.             move.w    #$41D,-(sp)
  1318.             dc.w     $AA5E
  1319.         EndM
  1320.     ELSE
  1321.         IMPORT_CFM_FUNCTION    IPMAddReplyQueue
  1322.     ENDIF
  1323.  
  1324. ;
  1325. ; pascal OSErr IPMOpenHFSMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1326. ;
  1327.     IF ¬ GENERATINGCFM THEN
  1328.         Macro
  1329.         _IPMOpenHFSMsg
  1330.             move.w    #$417,-(sp)
  1331.             dc.w     $AA5E
  1332.         EndM
  1333.     ELSE
  1334.         IMPORT_CFM_FUNCTION    IPMOpenHFSMsg
  1335.     ENDIF
  1336.  
  1337. ;
  1338. ; pascal OSErr IPMGetBlkIndex(IPMParamBlockPtr paramBlock, Boolean async)
  1339. ;
  1340.     IF ¬ GENERATINGCFM THEN
  1341.         Macro
  1342.         _IPMGetBlkIndex
  1343.             move.w    #$418,-(sp)
  1344.             dc.w     $AA5E
  1345.         EndM
  1346.     ELSE
  1347.         IMPORT_CFM_FUNCTION    IPMGetBlkIndex
  1348.     ENDIF
  1349.  
  1350. ;
  1351. ; pascal OSErr IPMGetMsgInfo(IPMParamBlockPtr paramBlock, Boolean async)
  1352. ;
  1353.     IF ¬ GENERATINGCFM THEN
  1354.         Macro
  1355.         _IPMGetMsgInfo
  1356.             move.w    #$419,-(sp)
  1357.             dc.w     $AA5E
  1358.         EndM
  1359.     ELSE
  1360.         IMPORT_CFM_FUNCTION    IPMGetMsgInfo
  1361.     ENDIF
  1362.  
  1363.     ENDIF ; __OCEMESSAGING__
  1364.